home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / clang / nbapi.zip / NB_API.C next >
C/C++ Source or Header  |  1991-06-20  |  3KB  |  139 lines

  1. /***********************************************************/
  2. /*    Program: NB_API.C                   */
  3. /*       Author: Greg Layton                   */
  4. /*     Revision: 01.01.00                   */
  5. /*         Date: 06/20/91                   */
  6. /***********************************************************/
  7.  
  8. #include "nb_api.h"
  9.  
  10. struct NCB add_name(char *name)
  11. {
  12.     struct NCB tmp;
  13.  
  14.     memset(&tmp,'\0',sizeof(struct NCB));
  15.     tmp.NCB_COMMAND=ADD_NAME;
  16.     strncpy(tmp.NCB_NAME,name,16);
  17.     tmp=nb_request(tmp);
  18.     return(tmp);
  19.     /* Need to pull NCB_NUM as Local Name Number */
  20. }
  21.  
  22. struct NCB del_name(char *name)
  23. {
  24.     struct NCB tmp;
  25.  
  26.     memset(&tmp,'\0',sizeof(struct NCB));
  27.     tmp.NCB_COMMAND=DELETE_NAME;
  28.     strncpy(tmp.NCB_NAME,name,16);
  29.     tmp=nb_request(tmp);
  30.     return(tmp);
  31.  
  32. }
  33.  
  34. struct NCB nb_request(struct NCB tmp)
  35. {
  36.     tmp.NCB_LANA_NUM=0;
  37.     _ES=FP_SEG(&tmp);
  38.     _BX=FP_OFF(&tmp);
  39.     _AX=0x100;
  40.     geninterrupt(0x5C);
  41.     return(tmp);
  42. }
  43.  
  44. struct NCB call(char *rem_name, char *loc_name, unsigned timeout)
  45. {
  46.     struct NCB tmp;
  47.  
  48.     memset(&tmp,'\0',sizeof(struct NCB));
  49.     tmp.NCB_COMMAND=CALL_WAIT;
  50.     strncpy(tmp.NCB_CALLNAME,rem_name,16);
  51.     strncpy(tmp.NCB_NAME,loc_name,16);
  52.     tmp.NCB_RTO=(timeout*2);
  53.     tmp.NCB_STO=(timeout*2);
  54.     tmp=nb_request(tmp);
  55.     return(tmp);
  56.     /* Need to pull NCB_LSN for Session LSN */
  57. }
  58.  
  59. struct NCB listen(char *rem_name, char *loc_name, unsigned timeout)
  60. {
  61.     struct NCB tmp;
  62.  
  63.     memset(&tmp,'\0',sizeof(struct NCB));
  64.     tmp.NCB_COMMAND=LISTEN_WAIT;
  65.     strncpy(tmp.NCB_CALLNAME,rem_name,16);
  66.     strncpy(tmp.NCB_NAME,loc_name,16);
  67.     tmp.NCB_RTO=(timeout*2);
  68.     tmp.NCB_STO=(timeout*2);
  69.     tmp=nb_request(tmp);
  70.     return(tmp);
  71.     /* Need to pull NCB_LSN for Target LSN */
  72. }
  73.  
  74. struct NCB hang_up(unsigned char target_lsn)
  75. {
  76.     struct NCB tmp;
  77.  
  78.     memset(&tmp,'\0',sizeof(struct NCB));
  79.     tmp.NCB_COMMAND=HANG_UP_WAIT;
  80.     tmp.NCB_LSN=target_lsn;
  81.     tmp=nb_request(tmp);
  82.     return(tmp);
  83. }
  84.  
  85. struct NCB send(char *buffer, unsigned int length, unsigned char session_lsn)
  86. {
  87.     struct NCB tmp;
  88.  
  89.     memset(&tmp,'\0',sizeof(struct NCB));
  90.     tmp.NCB_COMMAND=SEND_WAIT;
  91.     tmp.NCB_LSN=session_lsn;
  92.     tmp.NCB_BUFFER_SEGMENT=FP_SEG(buffer);
  93.     tmp.NCB_BUFFER_OFFSET=FP_OFF(buffer);
  94.     tmp.NCB_LENGTH=length;
  95.     tmp=nb_request(tmp);
  96.     return(tmp);
  97. }
  98.  
  99. struct NCB receive(char *buffer, unsigned int length, unsigned char session_lsn)
  100. {
  101.     struct NCB tmp;
  102.  
  103.     memset(&tmp,'\0',sizeof(struct NCB));
  104.     tmp.NCB_COMMAND=RECEIVE_WAIT;
  105.     tmp.NCB_LSN=session_lsn;
  106.     tmp.NCB_BUFFER_SEGMENT=FP_SEG(buffer);
  107.     tmp.NCB_BUFFER_OFFSET=FP_OFF(buffer);
  108.     tmp.NCB_LENGTH=length;
  109.     tmp=nb_request(tmp);
  110.     return(tmp);
  111. }
  112.  
  113. int check_nb_install(void)
  114. {
  115.     _AX=0;
  116.     geninterrupt(0x2A);
  117.     return(_AH);
  118. }
  119.  
  120. void print_ncb(struct NCB ncb)
  121. {
  122.     printf("\r\nCommand: %02Xh\r\n",ncb.NCB_COMMAND);
  123.     printf("Return Code: %02Xh\r\n",ncb.NCB_RETCODE);
  124.     printf("LSN: %02Xh\r\n",ncb.NCB_LSN);
  125.     printf("Local Name Number: %02Xh\r\n",ncb.NCB_NUM);
  126.     printf("Buffer Address: %04Xh:%04Xh\r\n",ncb.NCB_BUFFER_SEGMENT,
  127.     ncb.NCB_BUFFER_OFFSET);
  128.     printf("Buffer Length: %u\r\n",ncb.NCB_LENGTH);
  129.     printf("Call Name: %s\r\n",ncb.NCB_CALLNAME);
  130.     printf("Local Name: %s\r\n",ncb.NCB_NAME);
  131.     printf("RX Timeout: %d\r\n",ncb.NCB_RTO);
  132.     printf("TX Timeout: %d\r\n",ncb.NCB_STO);
  133.     printf("Post Routine: %04Xh:%04Xh\r\n",ncb.NCB_POST_SEGMENT,
  134.     ncb.NCB_POST_OFFSET);
  135.     printf("LANA Number: %02Xh\r\n",ncb.NCB_LANA_NUM);
  136.     printf("Command Completion: %02Xh\r\n",ncb.NCB_CMD_CPLT);
  137.  
  138. }
  139.